# Анализ стохастических систем.
Этот репрезеторий посвящён спецкурсу группы инженерной физики кафедры фотоники и физики микроволн ФФ МГУ. Контроль версий необходим, что бы это всё не кануло в лету. Так следующие поколения смогут использовать ваши наработки и посвятить себя другим исследованиям, а курс станет динамическим и будет постоянно развиваться. Бонусом вы получите опыт работы с python, jupyter и git. 

Лишних команд в этой инструкции нет, по этому прочитать и выполнить надо до конца.

## Настройка ssh доступа git

Для начала надо добавить ssh ключ в систему командой `ssh-keygen`, и добавить его в сам github/notabug.

Откройте терминал. Затем введите последовательно следующие команды:
```bash
ssh-keygen -t ed25519 -C "analyssochsystem"
cat .ssh/id_ed25519.pub 
```
`cat .ssh/id_ed25519.pub ` выведет содержимое файла. 
В винде оно должно лежать в C:\Users\your_username/.ssh. 
Файл также можно открыть просто текстовым редактором.
Он должен выглядить как то так:

```
ssh-ed25519 KMLKDDj409jfpwjfjw4qj4jpPJPDjiwdijiejPOWdi3jr0jfpimappojdd3wOIJDknOW analyssochsystem
```

Затем содержимое файла копируется(полностью) и добавляется в веб-интерфейсе в [настройках аккаунта](https://notabug.org/user/settings/ssh). Нужно придумать имя ключа, ввести его в верхнем поле, а в нижнем вставить само содержимое файла. Не в коем случае не скидывайте никому свой приватный ключ(файл без расширения), тогда вы рискуете оставить огромную дырку в безопасности вашего аккаунта. Имейте в виду, что в винде отображение расширений файлов по умолчанию выключено, а отображение скрытых папок и файлов(начинающихся с точки) по умолчанию выключено везде.
## Настройка окружения и запуск
Для клонирования используется команда `git clone git@notabug.org:Nikita-The-First/Analyssochsystem.git`, то есть клонируется через ssh. Если вы собираетесь что то заливать, лучше склонировать именно так, потом меньше мороки. Периодически нужно делать `git pull`, иначе могут возникнуть конфликты с другими участниками проекта, да и просто всё всегда будет в актуальном состоянии.
### UNIX-подобные ОС, включая linux и mac
Установите пакеты `python3-dev python3-venv python3-pip`, в дистрибутивах __Linux__ на базе дебиан можно поставить командой 
```shell
sudo apt install python3-dev python3-venv python3-pip
```
Дальнейшие инструкции актуальны также и для __Mac OS__.
Откройте терминал. Введите последовательно следующие команды:
```bash
git clone git@notabug.org:Nikita-The-First/Analyssochsystem.git
cd Analyssochsystem
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
jupyter notebook
```
### Windows
Установите `python >= 3.6` c официального сайта, не забудьте указать, что `python` нужно добавить в `PATH`. Затем откройте терминал, как правило это можно сделать через меню правой кнопки мыши с зажатым `Shift` в файловом менеджере. Введите последовательно следующие команды:
```shell
git clone git@notabug.org:Nikita-The-First/Analyssochsystem.git
cd Analyssochsystem
python -m venv venv
venv\Scripts\activate.bat
pip install -r requirements.txt
jupyter notebook
```
## Работа с git

Периодически нужно делать `git pull`, иначе могут возникнуть конфликты с другими участниками проекта.
Заливать изменения можно следующим способом.
```bash
git pull
git add .
git commit -m "message"
git push
```

В файл __.gitignore__ можно добавлять всё что вы не хотели бы заливать, например виртуальные окружения, бинарные файлы, файлы настроек и так далее. 

Можно не испоьзовать ssh, но тогда каждый раз вводить пароль при  `git push`.

Интеграцию с гит имеет большинство сред разработки, и лучше использовать её.


## Известные проблемы

Не забывайте довольно универсальный способ решения проблем: снести всё и поставить заново как надо. Порой так быстрее.

### Если вы вдруг склонировали через http

Попробуйте 

```bash
git remote rm origin
git remote add origin git@notabug.org:Nikita-The-First/Analyssochsystem.git
git fetch
```

Или страдайте, вводя пароль каждый раз, если не прикроют как на гитхабе.

### Проблемы с настройкой окружения под виндой
Этот спецефичный для винды баг должен описать [Шилинговский Дмитрий](https://notabug.org/shilingdima).